import metapensiero.pj
class voxel:
    shape = {'x': 128, 'y': 128, 'z': 128}
    def id(self, name):
        return 37
    def name(self, id):
        return 'A'
    def setVoxel(self,x, y, z, voxel, rotation=0):
        return 37
    def setVoxelID(self,x, y, z, voxel):
        return 37
    def getVoxel(self,x, y, z):
        return 37
    def getVoxelID(self,x, y, z):
       return 37
    def getVoxelRotation(self,x, y, z):
        return 0
    VoxelTypes = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','acacia','add','air','air_duct','ampersand','asterisk','at','backslash','bamboo','bat_window','bear_footprint','biscuit','black','black_glass','blue','blue_decorative_light','blue_gift','blue_glass','blue_light','blue_surface_01','blue_surface_02','blueberry_juice','board0','board1','board10','board11','board12','board13','board14','board15','board2','board3','board4','board5','board6','board7','board8','board9','board_01','board_02','board_03','board_04','board_05','board_06','board_07','bookshelf','bounce_pad','bracket_close','bracket_open','brick_01','brick_02','brick_red','button','cadet_blue','candy','caret','carpet_01','carpet_02','carpet_03','carpet_04','carpet_05','carpet_06','carpet_07','carpet_08','carpet_09','carpet_10','carpet_11','carpet_12','carpet_13','coffee','coffee_gray','colon','color_glass','comma','conveyor','crane_lantern','crane_roof_01','crane_roof_02','cross_window','dark_brick_00','dark_brick_01','dark_brick_02','dark_grass','dark_gray','dark_orchid','dark_red','dark_salmon','dark_slate_blue','dark_stone','dark_surface','dirt','divide','dollar','eight','equal','exclamation_mark','express_box','fan','firecracker','five','four','fu','geometric_window_01','geometric_window_02','glass','gold_trim_brick','grape_juice','grass','greater_than','green_decorative_light','green_glass','green_leaf','green_light','greenbelt_L','greenbelt_L1','grey_stone_brick','honeycomb_01','honeycomb_02','ice','ice_brick','ice_wall','indigo_light','lab_lamp_01','lab_lamp_02','lab_lamp_03','lab_material_01','lab_material_02','lab_material_03','lab_material_04','lab_material_05','lab_material_06','lab_material_07','lab_material_08','lab_material_09','lab_material_10','lab_material_11','lab_material_12','lab_material_13','lab_material_14','lab_material_15','lab_screen','lab_wire','lantern_01','lantern_02','lava01','lava02','leaf_01','leaf_02','leaf_03','leaf_04','leaf_05','leaf_06','ledfloor01','ledfloor02','lemon','lemon_juice','less_than','light_gray','light_grey_stone_brick','lime_juice','macaroon','maroon','medium_gray','medium_green','medium_orchid','medium_purple','medium_spring_green','medium_violet_red','medium_yellow','milk','mint_green','mint_green_light','multiply','navajo_white','nine','olive_green','one','orange','orange_juice','orange_light','orange_red','palace_carving','palace_cloud','palace_eaves_01','palace_eaves_02','palace_eaves_03','palace_eaves_04','palace_eaves_05','palace_eaves_06','palace_eaves_07','palace_eaves_08','palace_floor','palace_lamp','palace_roof','palace_window','pale_green','palm','paren_close','paren_open','peach_juice','percent','period','peru','pink','pink_cake','pink_light','plank_01','plank_02','plank_03','plank_04','plank_05','plank_06','plank_07','polar_ice','polar_region','pound','powder_blue','pumpkin','pumpkin_lantern','purple','purple_surface_01','purple_surface_02','quartz_brick','question_mark','quotation_mark','rainbow_cube','red','red_brick','red_brick_floor','red_brick_wall','red_decorative_light','red_gift','red_glass','red_light','rock','roof_blue_04','roof_green','roof_grey','roof_purple','roof_red','roof_yellow','sakura_pink','sand','semicolon','seven','sienna','six','sky_blue','slash','snow','snowflake_lamp','snowland','snowman_body','snowman_head','soy_sauce','spiderweb','stained_glass','stainless_steel','star_lamp','stone','stone_brick_01','stone_brick_02','stone_pillar_03','stone_pillar_04','stone_pillar_05','stone_pillar_06','stone_wall','stone_wall_01','strawberry_juice','stripe_01','stripe_02','stripe_03','stripe_04','stripe_05','subtract','television','three','tilde','toolbox','traditional_window','treasure_chest','turquoise','two','warm_yellow_light','water','white','white_grass','white_light','window','windygrass','winter_leaf','wood','wooden_box','woodstone_12','yellow_decorative_light','yellow_grass','yellow_green','yellow_light','zero', ]
class consoles:
    def clear(self):
       #暂未开发
       return
    def log(self, text):
        print(text)

class entitys:
    class players:
        name = 'player'
        boxId = 'aaaaaaaa'
        userKey = 'bbbbbbb'
        spawnPoint = [64,140,64]
        movementBounds = [[-50,-50,-50],[178,178,178]]
        def directMessage(self,message):
            return
        def onChat(self):
            entity = {}
            message = ''
            tick = 0
            return
        muted = False
        def dialog(self,type,title,lookTarget,content,options):
            return {}
        def cancelDialogs(self):
            return
        color = [1,1,1]
        emissive = 0
        invisible = False
        skinInvisible = {
            'hips': False,
            'torso': False,
            'neck': False,
            'head': False,
            'leftShoulder': False,
            'leftUpperArm': False,
            'leftLowerArm': False,
            'leftHand': False,
            'leftUpperLeg': False,
            'leftLowerLeg': False,
            'leftFoot': False,
            'rightShoulder': False,
            'rightUpperArm': False,
            'rightLowerArm': False,
            'rightHand': False,
            'rightUpperLeg': False,
            'rightLowerLeg': False,
            'rightFoot': False,
        }
        showName = True
        scale = 1
        metalness = 0
        shininess = 0
        def addWearable(self, spec):
            return {}
        def removeWearable(self):
            return
        def werarables(self, bodypart = ''):
            return [{}]
        def link(self, href, options = {'isConfirm': True, 'isNewtab': True}):
            return
        url = ''
        def forceRespawn(self):
            return
        def onRespawn(self):
            tick = 0
            entity = {}
            return
        dead = False
        cameraEntity = {}
        cameraMode = 'follow'
        cameraPosition = [0,0,0]
        cameraTarget = [0,0,0]
        cameraUp = [0,1,0]
        enable3DCursor = False
        enableAction0 = True
        enableAction1 = True
        action0Button = False
        action1Button = False
        crouchButton = False
        facingDirection = [1,0,0]
        jumpButton = False
        def onPress(self):
            button = ''
            entity = {}
            position = []
            pressed = True
            raycast = {}
            tick = 0
            return
        def onRelease(self):
            button = ''
            entity = {}
            position = []
            pressed = True
            raycast = {}
            tick = 0
            return
        walkButton = False
        canFly = False
        spectatoe = False
        enableJump = True
        enableDoubleJump = True
        walkSpeed = 0.22
        runSpeed = 0.4
        runAcceleration = 0.35
        jumpPower = 0.96
        jumpSpeedFactor = 0.85
        jumpAccelerationFactor = 0.55
        doubleJumpPower = 0.9
        crouchSpeed = 0.1
        crouchAcceleration = 0.09
        flySpeed = 2
        flyAcceleration = 2
        swimAcceleration = 0.1
        swimSpeed = 0.4
        walkAcceleration = 0.19
        moveState = 'fall'
        walkState = 'none'
        action0Sound = ''
        action1Sound = ''
        crouchSound = ''
        jumpSound = 'audio/jump.mp3'
        doubleJumpSound = 'audio/double_jump.mp3'
        landSound = 'audio/land.mp3'
        enterWaterSound = 'audio/dive.mp3'
        leaveWaterSound = 'audio/splash.mp3'
        swimSound = 'audio/swim.mp3'
        spawnSound = 'audio/spawn.mp3'
        stepSound = 'audio/step.mp3'
        startFlySound = ''
        stopFlySound = ''
        def sound(sample,gain = 1,pitch = 1):
            return 
        music = {
            'sample' : '',
            'gain' : 1
        }
        colorLUT = ''
        def animate(duration=0,easeIn = {},caseOut={},cameraEntity = {},cameraMode = {}):
            return 
        #这里需要创作者自己补充哈

    mesh = ''
    position = [0,0,0]
    meshOrientation = [0,0,0,1]
    meshScale = [1/64,1/64,1/64]
    meshColor = [1,1,1,1]
    meshInvisible = False
    meshEmissive = 0
    meshMetalness = 0
    meshShininess = 0
    meshOffset = [0,0,0]
    bounds = [1,1,1]
    collides = True
    fixed = False
    friction = 0
    gravity = True
    mass = 1
    restitution = 0
    velocity = [0,0,0]
    contactForce = [0,0,0]
    entityContacts = []
    voxelContacts = []
    fluidContacts = []
    def say(self,message):
        return 
    enableInteract = False
    interactRadius = 16
    interactHint = ''
    interactColor = [1,1,1]
    def onClick(self):
        clicker = {}
        button = ''
        distance = 0
        clickerPosition = []
        raycast = {}
        tick = 0
        return
    def onEntityContact(self):
        axis = []
        entity = {}
        force = []
        other = {}
        tick = 0
        return
    def onEntitySeparate(self):
        axis = []
        entity = {}
        force = []
        other = {}
        tick = 0
        return
    def onFluidEnter(self):
        entity = {}
        tick = 0
        voxel = 0
        return
    def onFluidLeave(self):
        entity = {}
        tick = 0
        voxel = 0
        return
    def onInteract(self):
        entity = {}
        targetEntity = {}
        tick = 0
        return
    def onVoxelContact(self):
        axis = []
        entity = {}
        force = []
        tick = 0
        voxel = 0
        x = 0
        y = 0
        z = 0
        return
    def onVoxelSeparate(self):
        axis = []
        entity = {}
        force = []
        tick = 0
        voxel = 0
        x = 0
        y = 0
        z = 0
        return
    isPlayer = False
    def addTag(self,tag):
        return
    def hasTag(self,tag):
        return
    id = ''
    def removeTag(self,tag):
        return
    def tags(self):
        return ['']
    def destroy(self):
        return
    destroyed = False
    def onDestroy(self):
        entity = {}
        tick = 0
        return
    enableDamage = False
    showHealthBar = True
    hp = 100
    maxHp = 100
    def onTakeDamage(self):
        attacker = {}
        damage = 0
        damageType = ''
        entity = ''
        tick = 0
        return
    def onDie(self):
        attacker = ''
        damageType = ''
        entity = {}
        tick = 0
        return
    def hurt(self, amount, options = {'attacker': {}, 'damageType': ''}):
        return
    particleRate = 0
    particleRateSpread = 0
    particleLimit = 100
    particleLifetime = 10
    particleLifetimeSpread = 0
    particleSize = [1,1,1,1,1]
    particleSizeSpread = 0
    particleColor = [[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]]
    particleVelocity = [0, 0, 0]
    particleVelocitySpread = [0,0,0]
    particleDamping = 0
    particleAcceleration = [0,0,0]
    particleNoise = 0
    particleNoiseFrequency = 1
    chatSound = {}
    interactSound = {}
    hurtSound = {}
    dieSound = {}
    def sound(self, spec = {'sample': '', 'radius': 32, 'gain': 1, 'pitch': 1}):
        return
    def animat(self, keyframes, playbackInfo):
        return

class worlds:
    projectName = ''
    def onTick(self):
        tick = 0
        prevTick = 0
        elapsedTimeMS = 0
        skip = False
        return
    currentTick = 0
    def say(self, message):
        return
    def onChat(self):
        entity = {}
        message = ''
        tick = 0
        return
    def onPlayerJoin(self):
        entity = ''
        tick = 0
        return
    def onPlayerLeave(self):
        entity = ''
        tick = 0
        return
    def onInteract(self):
        entity = {}
        targetEntity = {}
        tick = 0
        return
    def onClick(self):
        entity = {}
        clicker = {}
        button = ''
        distance = 0
        clickerPosition = []
        raycast = {}
        tick = 0
        return
    def onPress(self):
        button = ''
        entity = {}
        position = []
        pressed = True
        raycast = {}
        tick = 0
        return
    def onRelease(self):
        button = ''
        entity = {}
        position = []
        pressed = True
        raycast = {}
        tick = 0
        return
    def createEntity(self, config):
        return {}
    def entityQuota(self):
        return 0
    def onEntityCreate(self):
        entity = {}
        tick = 0
        return
    def onEntityDestroy(self):
        entity = {}
        tick = 0
        return
    def onTakeDamage(self):
        attacker = {}
        damage = 0
        damageType = ''
        entity = ''
        tick = 0
        return
    def onDie(self):
        attacker = ''
        damageType = ''
        entity = {}
        tick = 0
        return
    def onRespawn(self):
        entity = {}
        tick = 0
        return
    def addZone(self, config):
        return {}
    def removeZone(self, zone):
        return
    def zones(self):
        return [box3Zone]
    def querySelector(self, selector):
        return {}
    def querySelectorAll(self, selector):
        return[{}]
    def searchBox(self, bounds):
        return [{}]
    def raycast(self, origin, direction, options={}):
        origin = {}
        direction = {}
        distance  = 0
        hit = True
        hitEntity = {}
        hitPosition = []
        hitVoxel = 0
        voxelIndex = {}
        normal = {}
        return
    gravity = 0
    airFriction = 0
    def onEntityContact(self):
        axis = []
        entity = {}
        force = []
        other = {}
        tick = 0
        return

class box3Zone:
    bounds = {}
    #这里需要创作者自己补充